//
//  NSString+ExRegex.h
//  OC-Example
//
//  Created by lcj on 2020/11/3.
//  Copyright © 2020 apang.men. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (ExRegex)

/**
 执行正则
 
 @param regex 正则表达式
 @return 是|否
 */
- (BOOL)apm_executeRegex:(nonnull NSString *)regex;

/**
 字符串过滤，只保留符合regex的
 
 @param regex 正则表达式
 @return 过滤后的字符串
 */
- (nullable NSString *)apm_stringWithRegex:(nonnull NSString *)regex;
/**
 是否只包含数字
 
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
- (BOOL)apm_onlyNumber:(nullable NSString *)range;

/**
 是否是中国手机号码
 
 @return 是|否
 */
- (BOOL)apm_isCNTelPhoneNumber;

/**
 是否是email
 
 @return 是|否
 */
- (BOOL)apm_isEamilAddress;

/**
 大写或小写字母或数字
 
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
- (BOOL)apm_upperOrLowercaseLettersOrNumber:(nullable NSString *)range;

/**
 字母数字组合
 
 @discussion 不区分大小写
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
- (BOOL)apm_lettersAndNumber:(nullable NSString *)range;

/**
 只有大小写字母和数字
 
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
- (BOOL)apm_upperAndLowercaseLettersAndNumber:(nullable NSString *)range;

/**
 执行正则
 
 @param regex 正则表达式
 @param string 校验内容
 @return 是|否
 */
+ (BOOL)apm_executeRegex:(nonnull NSString *)regex string:(nonnull NSString *)string;
/**
 是否只包含数字
 
 @param string 目标字符串
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
+ (BOOL)apm_onlyNumber:(nonnull NSString *)string range:(nullable NSString *)range;

/**
 是否时中国手机号码
 
 @param string 目标字符串
 @return 是|否
 */
+ (BOOL)apm_isCNTelPhoneNumber:(nonnull NSString *)string;

/**
 是否是email
 
 @param string 目标字符串
 @return 是|否
 */
+ (BOOL)apm_isEamilAddress:(nonnull NSString *)string;

/**
 大写或小写字母或数字
 
 @param string 目标字符串
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
+ (BOOL)apm_upperOrLowercaseLettersOrNumber:(nonnull NSString *)string range:(nullable NSString *)range;

/**
 字母数字组合
 
 @discussion 不区分大小写
 @param string 目标字符串
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
+ (BOOL)apm_lettersAndNumber:(nonnull NSString *)string range:(nullable NSString *)range;

/**
 只有大小写字母和数字
 
 @param string 目标字符串
 @param range 范围,如果为空则不限制（*）,例如：0-N位*,1-N位+,0-1位? 11位{11},1~20位{1,20}
 @return 是|否
 */
+ (BOOL)apm_upperAndLowercaseLettersAndNumber:(nonnull NSString *)string range:(nullable NSString *)range;

@end

NS_ASSUME_NONNULL_END
